
package de.syfy.project.game.base;

import de.syfy.project.game.CharacterModel;

/**
 * Benutzbare Fähigkeit (ggf gekoppelt an ein HUD element)
 * @author Felix
 */
public abstract class Skill implements Useable{

    CharacterModel besitzer;
    
    String name;

    /**
     * Zeit die bis zur erneuten Anwendung verstrichen sein muss
     */
    float cdTime;
    
    /**
     * noch laufende zeit
     */
    float runningCD;
    long cdStart;

    public Skill(String name, float cdTime , CharacterModel besitzer) {
        this.name = name;
        this.cdTime = cdTime * 100;
        this.runningCD = 0;
        this.besitzer = besitzer;
        this.cdStart = 0;
    }

    public Skill(String name , CharacterModel besitzer) {
        this(name,1,besitzer);
        
    }

    public CharacterModel getBesitzer() {
        return besitzer;
    }

    public String getName() {
        return name;
    }
    
    
    
    public float getCdTime() {
        return cdTime;
    }

    public float getRunningCD() {
        return runningCD;
    }
    
    @Override
    public boolean cdReady(){
        return runningCD == 0;
    }

    @Override
    public void use() {
       this.runningCD = cdTime*1000;
       cdStart = System.currentTimeMillis();
    }
    
    @Override
    public void decCD(){
        if(runningCD > 0 ){
            runningCD -= System.currentTimeMillis() - cdStart;
        } else { runningCD = 0;}
    }
    
}
